/**
 * 字符串变形
 * 
 * 描述

对于一个长度为 n 字符串，我们需要对它做一些变形。

首先这个字符串中包含着一些空格，就像"Hello World"一样，然后我们要做的是把这个字符串中由空格隔开的单词反序，同时反转每个字符的大小写。

比如"Hello World"变形后就变成了"wORLD hELLO"。

数据范围: 
1
≤
n
≤
1
0
6
1≤n≤10 
6
  , 字符串中包括大写英文字母、小写英文字母、空格。
进阶：空间复杂度 
O
(
n
)
O(n) ， 时间复杂度 
O
(
n
)
O(n)
输入描述：

给定一个字符串s以及它的长度n(1 ≤ n ≤ 10^6)
返回值描述：

请返回变形后的字符串。题目保证给定的字符串均由大小写字母和空格构成。
 */
public class 字符串变形 {
    
    public static void main(String[] args) {
        
        System.out.println(trans(" h i ", 4));

    }

    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *x
     * 
     * @param s string字符串 
     * @param n int整型 
     * @return string字符串
     */
    public static String trans (String s, int n) {
        // write code here

        String[] strArray = s.split(" ", -1);
     
    StringBuilder strbuild = new StringBuilder();
 
    for (int i = strArray.length - 1; i >= 0; i--) {
        strbuild.append(reverse(strArray[i])); //数组转换为字符串
        //最后一个字符串后面不再附加空格
        if(i==0) {
            break;
        }
        //字符串之间附加空格
        strbuild.append(" ");
    }
    return strbuild.toString();
 }
 
   //大小写转换
    private static String reverse(String s){
        StringBuilder res= new StringBuilder();
        for(char ch:s.toCharArray()){
            if(Character.isLowerCase(ch)){
                res.append(Character.toUpperCase(ch));
                continue;
            }
            if(Character.isUpperCase(ch)){
                res.append(Character.toLowerCase(ch));
                continue;
            }
        }
        return res.toString();
    }
}
